package cn.assumejson.springframework.beans.factory.config;


import cn.assumejson.springframework.beans.factory.BeansException;
import cn.assumejson.springframework.beans.factory.ListableBeanFactory;
import cn.assumejson.springframework.beans.factory.config.BeanDefinition;
import cn.assumejson.springframework.beans.factory.config.ConfigurableBeanFactory;

import java.util.Map;

/**
 * 大多数可列出的 bean 工厂要实现的配置接口。
 * 除了ConfigurableBeanFactory ，它还提供了分析和修改 bean 定义以及预实例化单例的工具
 *
 * @author Mr. Li
 * @version 1.0
 * @since 1.0 2021/11/30 15:26
 */
public interface ConfigurableListableBeanFactory extends ListableBeanFactory, ConfigurableBeanFactory {
    /**
     * 提前实例化单例bean
     *
     * @throws BeansException
     */
    void preInstantiateSingletons() throws BeansException;

    /**
     * 获取beanDefinition
     *
     * @param beanName beanName
     * @return
     */
    BeanDefinition getBeanDefinition(String beanName);

}
